/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import entidades.CamaImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.CamaAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioCama extends IntermediarioPersistencia{

    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        return "SELECT * FROM CAMA WHERE " + criterio.convertirAString();
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM CAMA";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
        return "SELECT * FROM CAMA WHERE oidCama = '" + oid +"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        
        CamaAgente ob = (CamaAgente) objeto;
        
        return  "INSERT INTO CAMA (oidCama, nroCama, libre, oidHabitacion) VALUES "
                   + "('" + ob.getOid()
                //+ generarOid() 
                //ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()  
                +"', "+ ob.getNroCama()
                +", "+ convertirBooleanAInt(ob.isLibre())
                +", '"+ ob.getOidHabitacion()
                + "')";
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        CamaAgente ob = (CamaAgente) objeto;
        return  "UPDATE CAMA SET "
                + "nroCama = " + ob.getNroCama()
                + ", libre = " + convertirBooleanAInt(ob.isLibre())
                + ", oidHabitacion = '" + ob.getOidHabitacion()
                + "' WHERE oidCama = '" + ob.getOid() +"'";
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM CAMA WHERE oidCama = '" + ((Agente)objeto).getOid() +"'";  
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
        List<Object> resultado = new ArrayList<Object>();
        CamaImpl implementacion;
        CamaAgente agente;

        try {
            while (result.next()) {
                implementacion = new CamaImpl();
                agente = new CamaAgente();
                agente.setCama(implementacion);
                
                agente.setOid(result.getString("oidCama"));
                agente.setNroCama(result.getInt("nroCama"));
                agente.setLibre(result.getBoolean("libre"));
                agente.setOidHabitacion(result.getString("oidHabitacion"));
                
                resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: "+ e.toString());
        }    
        
        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
